class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows==1) return s;
        int d=2*numRows-2;
        string ret;
        //第一行
        for(int i=0;i<s.size();i+=d)
        {
            ret.push_back(s[i]);
        }
        //中间几行
        for(int i=1;i<=numRows-2;i++)
        {
            int begin1=i;
            int begin2=d-begin1;
            while(begin1<s.size()&&begin2<s.size())
            {
                ret.push_back(s[begin1]);
                ret.push_back(s[begin2]);
                begin1+=d;
                begin2+=d;
            }

            //先跟新begin后面才是begin2
            if(begin1<s.size())
            {
                ret.push_back(s[begin1]);
            }
            //不用考虑begin2 begin2如果还没到结尾 begin1也一定不是结尾
        }
        //最后一行
        for(int i=numRows-1;i<s.size();i+=d)
        {
            ret.push_back(s[i]);
        }
        return ret;
    }
};